
public class Snippet {
    private static boolean wildMatch(String pattern, String str) {
        pattern = toJavaPattern(pattern);
        return java.util.regex.Pattern.matches(pattern, str);
    }

    private static String toJavaPattern(String pattern) {
            String result = "^";
            char metachar[] = { '$', '^', '[', ']', '(', ')', '{', '|', '*', '+', '?', '.', '/' };
            for (int i = 0; i < pattern.length(); i++) {
                char ch = pattern.charAt(i);
                boolean isMeta = false;
                for (int j = 0; j < metachar.length; j++) {
                    if (ch == metachar[j]) {
                        result += "/" + ch;
                        isMeta = true;
                        break;
                    }
                }
                if (!isMeta) {
                    if (ch == '*') {
                        result += ".*";
                    } else {
                        result += ch;
                    }
    
                }
            }
            result += "$";
            return result;
        }

    public static void main(String[] args) {
        test("*", "toto");
        test("toto.java", "tutu.java");
        test("12345", "1234");
        test("1234", "12345");
        test("*f", "");
        test("***", "toto");
        test("*.java", "toto.");
        test("*.java", "toto.jav");
        test("*.java", "toto.java");
        test("abc*", "");
        test("a*c", "abbbbbccccc");
        test("abc*xyz", "abcxxxyz");
        test("*xyz", "abcxxxyz");
        test("abc**xyz", "abcxxxyz");
        test("abc**x", "abcxxx");
        test("*a*b*c**x", "aaabcxxx");
        test("abc*x*yz", "abcxxxyz");
        test("abc*x*yz*", "abcxxxyz");
        test("a*b*c*x*yf*z*", "aabbccxxxeeyffz");
        test("a*b*c*x*yf*zze", "aabbccxxxeeyffz");
        test("a*b*c*x*yf*ze", "aabbccxxxeeyffz");
        test("a*b*c*x*yf*ze", "aabbccxxxeeyfze");
        test("*LogServerInterface*.java", "_LogServerInterfaceImpl.java");
        test("abc*xyz", "abcxyxyz");
    }

    private static void test(String pattern, String str) {
        System.out.println(pattern + " " + str + " =>> "
                + wildMatch(pattern, str));
    }
}
